﻿using FlashPay.EF.Models;
using FlashPay.Entity;
using FlashPay.Entity.Parameter;
using FlashPay.Entity.Request.DepositMatchRecord;
using FlashPay.Entity.Response.DepositMatchRecord;
using FlashPay.Entity.Response.Payment;
using System;
using System.Collections.Generic;
using System.Text;

namespace FlashPay.Service.Interface
{
    public interface DepositMatchRecordService
    {
        //获取收款匹配记录列表
        DataGrid<DepositMatchRecordResponse> GetDepositMatchRecordList(DepositMatchRecordQuery query);

        //根据ID查询详细信息
        JResult<DepositMatchRecord> GetMatchRecordDetail(DepositMatchRecordQuery query);

        /// <summary>
        /// 根据规则信息查询收款记录
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        PagedList<DepositOrPaymentRecordResponse> GetRecordListByRuleInfo(DepositMatchRecordQuery query);

        /// <summary>
        /// 获取收款匹配记录
        /// </summary>
        JResult<DepositMatchRecordAddResponse> GetDepositMatchRecordAdd(DepositMatchRecordAddRequest request);

        /// <summary>
        /// 获取收款匹配记录
        /// </summary>
        JResult<DepositMatchRecordAddResponse> GetDepositMatchRecordById(DepositMatchRecordAddRequest request);

        /// <summary>
        /// 收款记录查询(规则)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        DataGrid<DepositRecordResponse> GetMatchSearch(GetMatchSearchRequest request);

        /// <summary>
        /// 收款匹配记录[绑定收款记录]
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        JResult ReceiptMatchRecordBindReceiptRecord(ReceiptMatchRecordBindReceiptRecordRequest request);

        /// <summary>
        /// 新增收款匹配记录
        /// </summary>
        /// <param name="request"></param>
        JResult Add(AddRequest request);

        JResult Edit(EditRequest request);
    }
}
